//============================================================================================
/**
 * @file	box2.c
 * @brief	新ボックス画面
 * @author	Hiroyuki Nakamura
 * @date	08.05.13
 */
//============================================================================================
#include "common.h"

#include "savedata/config.h"
#include "application/box2.h"
#include "box2_main.h"
#include "box2_seq.h"


//============================================================================================
//	定数定義
//============================================================================================


//============================================================================================
//	プロトタイプ宣言
//============================================================================================


//============================================================================================
//	グローバル変数
//============================================================================================



//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：初期化
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT Box2Proc_Init( PROC * proc, int * seq )
{
	BOX2_SYS_WORK * syswk;

	OS_Printf( "↓↓↓↓↓　ボックス処理開始　↓↓↓↓↓\n" );

	sys_CreateHeap( HEAPID_BASE_APP, HEAPID_BOX_SYS, 0x10000 );

	syswk = PROC_AllocWork( proc, sizeof(BOX2_SYS_WORK), HEAPID_BOX_SYS );
	MI_CpuClear8( syswk, sizeof(BOX2_SYS_WORK) );

	syswk->dat    = PROC_GetParentWork( proc );
	syswk->box    = SaveData_GetBoxData( syswk->dat->savedata );
	syswk->tray   = BOXDAT_GetCureentTrayNumber( syswk->box );
	syswk->party  = SaveData_GetTemotiPokemon( syswk->dat->savedata );
	syswk->item   = SaveData_GetMyItem( syswk->dat->savedata );
	syswk->config = SaveData_GetConfig( syswk->dat->savedata );

	syswk->get_pos = BOX2MAIN_GETPOS_NONE;

	syswk->cur_rcv_pos = 0;

	syswk->next_seq = BOX2SEQ_MAINSEQ_START;

	// 変更フラグ初期化
//	BOX2MAIN_ModifiedFlagSet( syswk, FALSE );

	return PROC_RES_FINISH;
}

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：メイン
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT Box2Proc_Main( PROC * proc, int * seq )
{
	BOX2_SYS_WORK * syswk = PROC_GetWork( proc );

	if( BOX2SEQ_Main( syswk, seq ) == FALSE ){
		return PROC_RES_FINISH;
	}
	return PROC_RES_CONTINUE;
}

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：終了
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
PROC_RESULT Box2Proc_End( PROC * proc, int * seq )
{
	BOX2_SYS_WORK * syswk = PROC_GetWork( proc );

	BOXDAT_SetCureentTrayNumber( syswk->box, syswk->tray );		// カレントトレイ更新

	PROC_FreeWork( proc );

	sys_DeleteHeap( HEAPID_BOX_SYS );

	OS_Printf( "↑↑↑↑↑　ボックス処理終了　↑↑↑↑↑\n" );

	return PROC_RES_FINISH;
}